import Vue from "vue";
import Vuex from "vuex";
import mutations from "./mutations"
import getters from "./getters"
import actions from "./actions"
import moduleA from "./modules/moduleA"

Vue.use(Vuex)

const state = {
    counter:10,
    students:[
        {name:'why',age:18},
        {name:'kobe',age:24},
        {name:'zxd',age:21},
        {name:'lzy',age:22},
        {name:'tyy',age:11},
    ],
    info:{
        name:'kobe',
        age:40
    }
}
const store = new Vuex.Store({
    // state 单一数据源
    // 以下属性如果一开始就定义了，就会加入到响应式里面，当属性发生变化时，会通知所有界面中用到属性的地方
    // 如果没有被定义，就不能做到响应式，如果想做到响应式的，需要用到vue.set() -->新增 vue.delete -->删除
    state,
    // mutation,更新state里面唯一的方式就是通过mutation 同步的method
    // type为方法名
    mutations,
    // getters 相当于computed 需要做某些操作再返回
    getters,
    // actions 异步的method，用commit方法去调用mutation，最终修改数据只能在mutation修改
    actions,
    // modules
    modules:{
        a:moduleA
    }

})

export default store